import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)


/**
 * Un robot grande.
 * Es la unidad más poderosa de todas. Tiene un lanza-misiles y una ametralladora.
 * 
 * @author Mario Alberto Valencia Valero
 */
public class Mech2 extends Unidad
{
    private int turnosParaDisparar = 0,
        turnosParaDisparar2 = 0;
    private GreenfootSound sonidoDisparo,
                   sonidoDisparo2,
                   sonidoExplosion;
                   
    /**
     * Constructor
     * @param col  color de la unidad
     * @param humano  controlado por el jugador?
     */
    public Mech2(Color col, boolean humano)
    {
        super(col, humano);
        setImage("mech2_"+color.name()+".gif");
        getImage().scale( (int)(getImage().getWidth()*.7), (int)(getImage().getHeight()*.7) );
        vida = 600;
        velocidad = 15;
        sonidoDisparo = new GreenfootSound("machinegun.mp3");
        sonidoDisparo2 = new GreenfootSound("machinegun.mp3");
        sonidoExplosion = new GreenfootSound("tank_exploding.wav");
    }
    
    /**
     * Actuar.
     */
    public void act() 
    {
        super.act();
        if( turnosParaDisparar > 0 ) turnosParaDisparar--;
        if( turnosParaDisparar2 > 0 ) turnosParaDisparar2--;
    }
    
    /**
     * Checa si una unidad está en el rango de disparo.
     * @param u  unidad enemiga
     * @return true si la unidad está en rango, si no, false
     */
    protected boolean enRango( Unidad u ){
        return distancia(u) < 200;
    }
        
    /**
     * Atacar al objetivo.
     */
    public void atacar(){
        apuntar();
        if( turnosParaDisparar == 0 )
        {
            turnosParaDisparar = 2;
            Disparo d = new Disparo();
            getWorld().addObject( d, getX(), getY() );
            d.setRotation( getRotation()-42 );
            d.move(24);
            d.setRotation( getRotation() );
            ImpactoBala ib1 = new ImpactoBala(), ib2 = new ImpactoBala();
            getWorld().addObject( ib1, objetivo.getX()+Greenfoot.getRandomNumber(10), objetivo.getY()+Greenfoot.getRandomNumber(10) );
            getWorld().addObject( ib2, objetivo.getX()+Greenfoot.getRandomNumber(10), objetivo.getY()+Greenfoot.getRandomNumber(10) );
            sonidoDisparo.play();
            objetivo.bajarVida(20);
        }
        if( turnosParaDisparar2 == 0 )
        {
            turnosParaDisparar2 = 10;
            Misil m = new Misil(color, getRotation() );
            getWorld().addObject( m, getX(), getY() );
            m.setRotation( getRotation()+42 );
            m.move(24);
            m.setRotation( getRotation() );
            if( objetivo.getWorld() != null )
                m.turnTowards( objetivo.getX(), objetivo.getY() );
            sonidoDisparo2.play();
        }
    }
    
    /**
     * Muere.
     */
    protected void muere(){
        sonidoExplosion.play();
    }
}